package com.my.blog.config;

import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.springframework.context.annotation.Configuration;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;

/***
 *
 * @Auther: MuYun
 * @Date: 2021/7/13 14:05
 * @Description：
 *
 */
@Configuration
public class TestClass {


    //测试 7
    public static void main(String[] args) {
        System.out.println("----------------密码加密测试---------------");
        String hashName = "MD5";
        Object cred = "yun666";
        ByteSource byteSource = ByteSource.Util.bytes("admin");
        int hashInt = 1024;
        SimpleHash hash = new SimpleHash(hashName,cred,byteSource,hashInt);
        System.out.println("加盐加密后的password："+hash);

        System.out.println("----------------时间拼接测试---------------");
        String s = LocalDateTime.now().toString();
        String substring = s.substring(0, 10);

        System.out.println(s);
        System.out.println(substring);

        String s1 = s.substring(11, 13);
        String s2=s.substring(14,16);
        System.out.println("拼接分秒"+s1+s2);

        System.out.println("----------------日期比较测试---------------");
        LocalDate localDate=LocalDate.now();
        System.out.println("LocalDate可以直接获取到当前年月日："+localDate);
        LocalDate dayLocalDate = localDate.plusDays(1);//增加1天
        LocalDate monthLocalDate = localDate.plusMonths(1);//增加1月
        LocalDate yearLocalDate = localDate.plusYears(1);//增加1年

        boolean flag = dayLocalDate.isAfter(localDate);
        System.out.println("dayLocalDate是否在localDate日期之后："+flag);
        //获取年
        int year = localDate.getYear();
        //这是英文月份，March啥的
        Month enMonth = localDate.getMonth();
        //这是正常月份
        int valueMonth = localDate.getMonth().getValue();
        System.out.println("获取当前年："+year);
        System.out.println("获取当前月："+valueMonth);

        /*这里是错用了一个api(初始化年日，其实想初始化年月),但是也能实现功能
         *毕竟是错用，还是多嘴说一下，其实就是想获取当前的年月，但是好像LocalDate里没这个api
         * 可能有人想到用Date和SimperDateFormat不是更方便嘛，但是这样操作后，后续的月份比较会麻烦不少，所以就没用
         * 当然Date也能转LocalDate再比，先转String，再用parse(转好的String+转换格式)就可，也比较麻烦，不赘述了
         * */
        LocalDate monthDate=LocalDate.ofYearDay(year,valueMonth);
        LocalDate monthDate2=LocalDate.ofYearDay(year,valueMonth+1);
        boolean monthFlag = monthDate.isBefore(monthDate2);
        System.out.println("monthDate是否在monthDate2日期之前："+monthFlag);

        //获取指定格式的日期时间，想获取时分秒啥的就换用localDateTime就行了
        //多一句，DateTimeFormatter这个相较于之前的SimperDateFormat是线程安全的
        DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyyMM");
        int nowMonth = Integer.parseInt(localDate.format(formatter));
        System.out.println("当前年月："+nowMonth);
        //这步会报错，莫名其妙的,不能从String再转回LocalDate
        //LocalDate monthYear = LocalDate.parse(format,formatter);

        String yyyyMM = LocalDate.now().format(formatter).toString();
        System.out.println("yyyyMM:"+yyyyMM);
        String yyMM = yyyyMM.substring(2, yyyyMM.length());
        System.out.println("yyMM:"+yyMM);
    }



}
